COLUMN_DEFINED_AT,
COLUMN_OBJECT,
COLUMN_TOOLTIP,
- COLUMN_WRITABLE
+ COLUMN_WRITABLE,
+ COLUMN_ATTRIBUTE
};
enum
GtkWidget *widget_tree;
GtkCellRenderer *value_renderer;
gboolean child_properties;
+ GtkTreeViewColumn *attribute_column;
};
G_DEFINE_TYPE_WITH_PRIVATE (GtkInspectorPropList, gtk_inspector_prop_list, GTK_TYPE_TREE_VIEW)
case PROP_CHILD_PROPERTIES:
g_value_set_boolean (value, pl->priv->child_properties);
- g_object_set (pl->priv->value_renderer,
- "is-child-property", pl->priv->child_properties,
- NULL);
break;
default:
case PROP_CHILD_PROPERTIES:
pl->priv->child_properties = g_value_get_boolean (value);
+ g_object_set (pl->priv->value_renderer,
+ "is-child-property", pl->priv->child_properties,
+ NULL);
break;
default:
gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/inspector/prop-list.ui");
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorPropList, model);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorPropList, value_renderer);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorPropList, attribute_column);
}
static void
GParamSpec *prop)
{
GValue gvalue = {0};
- gchar *value;
+ gchar *value = NULL;
+ gchar *attribute = NULL;
- g_value_init(&gvalue, prop->value_type);
+ g_value_init (&gvalue, prop->value_type);
if (pl->priv->child_properties)
{
GtkWidget *parent;
}
else
{
- value = g_strdup_value_contents(&gvalue);
+ value = g_strdup_value_contents (&gvalue);
+ }
+
+ if (GTK_IS_CELL_RENDERER (pl->priv->object))
+ {
+ gpointer *area;
+ gint column = -1;
+
+ area = g_object_get_data (pl->priv->object, "gtk-inspector-cell-area");
+ if (area)
+ column = gtk_cell_area_attribute_get_column (GTK_CELL_AREA (area),
+ GTK_CELL_RENDERER (pl->priv->object),
+ prop->name);
+
+ if (column != -1)
+ attribute = g_strdup_printf ("%d", column);
}
gtk_list_store_set (pl->priv->model, iter,
COLUMN_NAME, prop->name,
- COLUMN_VALUE, value ? value : g_strdup (""),
+ COLUMN_VALUE, value ? value : "",
COLUMN_DEFINED_AT, g_type_name (prop->owner_type),
COLUMN_OBJECT, pl->priv->object,
COLUMN_TOOLTIP, g_param_spec_get_blurb (prop),
COLUMN_WRITABLE, (prop->flags & G_PARAM_WRITABLE) != 0,
+ COLUMN_ATTRIBUTE, attribute ? attribute : "",
-1);
g_free (value);
+ g_free (attribute);
g_value_unset (&gvalue);
}
pl->priv->signal_cnxs =
g_list_prepend (pl->priv->signal_cnxs,
- GINT_TO_POINTER (g_signal_connect(object, signal_name,
- G_CALLBACK (gtk_inspector_prop_list_prop_changed_cb), pl)));
+ GINT_TO_POINTER (g_signal_connect (object, signal_name,
+ G_CALLBACK (gtk_inspector_prop_list_prop_changed_cb), pl)));
g_free (signal_name);
}
+ g_object_set (pl->priv->attribute_column,
+ "visible", !pl->priv->child_properties && GTK_IS_CELL_RENDERER (object),
+ NULL);
return TRUE;
}
<column type="GObject"/>
<column type="gchararray"/>
<column type="gboolean"/>
+ <column type="gchararray"/>
</columns>
</object>
<template class="GtkInspectorPropList" parent="GtkTreeView">
</child>
</object>
</child>
+ <child>
+ <object class="GtkTreeViewColumn" id="attribute_column">
+ <property name="title" translatable="yes">Attribute</property>
+ <property name="resizable">True</property>
+ <child>
+ <object class="GtkCellRendererText">
+ <property name="scale">0.8</property>
+ <property name="editable">False</property>
+ </object>
+ <attributes>
+ <attribute name="text">6</attribute>
+ <attribute name="sensitive">5</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
<child>
<object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Defined At</property>